home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #221 (1993)(Rhein-Sieg-Soft).zip / Franz PD Disk #221 (1993)(Rhein-Sieg-Soft).adf / DoBB / DoBB.S < prev    next >
Text File  |  1993-03-01  |  11KB  |  432 lines

  1. ;*********************************************
  2. ;*                 DoBB V1.05                *
  3. ;*  Installiert nach Option einen BootBlock  *
  4. ;*     Sprache: Kuma-Seka Assembler V3.0     *
  5. ;*          © 1992 Volker Stepprath          *
  6. ;*********************************************
  7.  
  8.  
  9. ;**** VARIABLEN DEFINIEREN *************
  10. ExecBase    =    4
  11. Open        = - 30
  12. Close       = - 36
  13. Read        = - 42
  14. Write       = - 48
  15. AllocMem    = -198
  16. FreeMem     = -210
  17. FindTask    = -294
  18. OpenLib     = -408
  19. CloseLib    = -414
  20. OpenDevice  = -444
  21. CloseDevice = -450
  22. DoIO        = -456
  23. ;***************************************
  24.  
  25.  
  26. ;**** PARAMETERTEST ********************
  27. Cmp.l   #7,D0
  28. Ble     xFEHLER
  29. Cmp.b   #58,3(A0)
  30. Bne     xFEHLER
  31. Move.b  2(A0),D4
  32. Sub.b   #48,D4
  33. Cmp.b   #0,D4
  34. Blt     xFEHLER
  35. Cmp.b   #3,D4
  36. Bgt     xFEHLER
  37. ;***************************************
  38.  
  39.  
  40. ;**** PARAMETER RETTEN *****************
  41. Move.l  A0,D6
  42. Move.l  D0,D7
  43. ;***************************************
  44.  
  45.  
  46. ;**** HAUPTPROGRAMM ********************
  47. xMAIN:
  48.         Jsr     xOPENLIB
  49.         Jsr     xOPEN
  50.  
  51.         Jsr     xOPENDEV
  52.         Cmp.l   #0,D0
  53.         Bne     xDEVFEHLER
  54.  
  55.         Jsr     xALLOCMEM
  56.         Jsr     xBOOTBLOCK
  57.         Jsr     xFREEMEM
  58.  
  59.         Jsr     xCLOSEDEV
  60.         Jsr     xCLOSE
  61.         Jsr     xCLOSELIB
  62. Rts     ;*******************************
  63.  
  64.  
  65. ;**** LIBRARY ÖFFNEN *******************
  66. xOPENLIB:
  67.         Move.l  ExecBase,A6
  68.         Lea     DOSNAME,A1
  69.         Move.l  #0,D0
  70.         Jsr     OpenLib(A6)
  71.         Move.l  D0,DOSBASE
  72. Rts     ;*******************************
  73.  
  74.  
  75. ;**** FENSTER ÖFFNEN *******************
  76. xOPEN:
  77.         Move.l  DOSBASE,A6
  78.         Move.l  #FENSTER,D1
  79.         Move.l  #1005,D2
  80.         Jsr     Open(A6)
  81.         Move.l  D0,HANDLE
  82. Rts     ;*******************************
  83.  
  84.  
  85. ;**** DEVICE ÖFFNEN ********************
  86. xOPENDEV:
  87.         Move.l  ExecBase,A6
  88.         Sub.l   A1,A1
  89.         Jsr     FindTask(A6)
  90.         Move.l  D0,DISKREP+$10
  91.         Lea     DISKIO,A1
  92.         Move.l  #DISKREP,14(A1)
  93.         Clr.l   D1
  94.         Move.l  D4,D0
  95.         Lea     DEVICE,A0
  96.         Jsr     OpenDevice(A6)
  97. Rts     ;*******************************
  98.  
  99.  
  100. ;**** SPEICHER RESERVIEREN *************
  101. xALLOCMEM:
  102.         Move.l  ExecBase,A6
  103.         Move.l  #1024,D0
  104.         Move.l  #$10003,D1
  105.         Jsr     AllocMem(A6)
  106.         Move.l  D0,DISKBUFF
  107. Rts     ;*******************************
  108.  
  109.  
  110. ;**** SPEICHER LÖSCHEN *****************
  111. xFREEMEM:
  112.         Move.l  ExecBase,A6
  113.         Move.l  #1024,D0
  114.         Move.l  DISKBUFF,A1
  115.         Jsr     FreeMem(A6)
  116. Rts     ;*******************************
  117.  
  118.  
  119. ;**** BOOTBLOCKDATEN INSTALLIEREN ******
  120. xBOOTBLOCK:
  121.         Move.l  D6,A0
  122.         Add.b   #3,(A0)
  123.  
  124.         ;**** - ************
  125.         Cmp.b   #45,5(A0)
  126.         Bne     xUSAGE
  127.  
  128.         ;**** S ************
  129.         Cmp.b   #83,6(A0)
  130.         Beq     xBOOTODAT
  131.         Cmp.b   #115,6(A0)
  132.         Beq     xBOOTODAT
  133.  
  134.         ;**** L ************
  135.         Cmp.b   #76,6(A0)
  136.         Beq     xDATOBOOT
  137.         Cmp.b   #108,6(A0)
  138.         Beq     xDATOBOOT
  139.  
  140.         ;**** N ************
  141.         Cmp.b   #78,6(A0)
  142.         Beq     xNOBOOT
  143.         Cmp.b   #110,6(A0)
  144.         Beq     xNOBOOT
  145.  
  146.         ;**** D ************
  147.         Cmp.b   #68,6(A0)
  148.         Beq     xDOSBOOT
  149.         Cmp.b   #100,6(A0)
  150.         Beq     xDOSBOOT
  151.  
  152.         ;**** Q ************
  153.         Cmp.b   #81,6(A0)
  154.         Beq     xQUARTEXBOOT
  155.         Cmp.b   #113,6(A0)
  156.         Beq     xQUARTEXBOOT
  157.  
  158. Jmp     xUSAGE  ;***********************
  159.  
  160.  
  161. ;**** BOOTBLOCK IN DATEI EINLESEN ******
  162. xBOOTODAT:
  163.         Move.l  ExecBase,A6
  164.         Lea     DISKIO,A1
  165.         Move    #2,28(A1)
  166.         Move.l  DISKBUFF,40(A1)
  167.         Move.l  #1024,36(A1)
  168.         Move.l  #0,44(A1)
  169.         Jsr     DoIO(A6)
  170.  
  171.         Jsr     xGETNAME
  172.         Move.l  DOSBASE,A6
  173.         Move.l  #1006,D2
  174.         Jsr     Open(A6)
  175.         Move.l  D0,HANDLEDAT
  176.         Cmp.l   #0,HANDLEDAT
  177.         Beq     xFILEFEHLER
  178.  
  179.         Move.l  HANDLEDAT,D1
  180.         Move.l  DISKBUFF,D2
  181.         Move.l  #1024,D3
  182.         Jsr     Write(A6)
  183.  
  184.         Move.l  HANDLEDAT,D1
  185.         Jsr     Close(A6)
  186. Rts     ;*******************************
  187.  
  188.  
  189. ;**** DATEI IN BOOTBLOCK SCHREIBEN *****
  190. xDATOBOOT:
  191.         Jsr     xGETNAME
  192.         Move.l  DOSBASE,A6
  193.         Move.l  #1005,D2
  194.         Jsr     Open(A6)
  195.         Move.l  D0,HANDLEDAT
  196.         Cmp.l   #0,HANDLEDAT
  197.         Beq     xFILEFEHLER
  198.  
  199.         Move.l  HANDLEDAT,D1
  200.         Move.l  DISKBUFF,D2
  201.         Move.l  #1024,D3
  202.         Jsr     Read(A6)
  203.  
  204.         Move.l  HANDLEDAT,D1
  205.         Jsr     Close(A6)
  206.  
  207.         Move.l  DISKBUFF,A4
  208.         Move.l  #255,D0
  209.         Jsr     xDOIO
  210. Rts     ;*******************************
  211.  
  212.  
  213. ;**** UTILITY BOOT V2.0 ****************
  214. xQUARTEXBOOT:
  215.         Lea     QUARTEXBOOT,A4
  216.         Move.l  #255,D0
  217.         Jsr     xDoIO
  218. Rts     ;*******************************
  219.  
  220.  
  221. ;**** STANDART DOS BOOT ****************
  222. xDOSBOOT:
  223.         Lea     DOSBOOT,A4
  224.         Move.l  #12,D0
  225.         Jsr     xDoIO
  226. Rts     ;*******************************
  227.  
  228.  
  229. ;**** NO BOOT **************************
  230. xNOBOOT:
  231.         Lea     NOBOOT,A4
  232.         Move.l  #0,D0
  233.         Jsr     xDoIO
  234. Rts     ;*******************************
  235.  
  236.  
  237. ;**** DEVICEKOMMANDO AUSFÜHREN *********
  238. xDOIO:
  239.         Move.l  DISKBUFF,A5
  240.  
  241.         MAKEBOOT:
  242.         Move.l  (A4)+,(A5)+
  243.         Dbra    D0,MAKEBOOT
  244.  
  245.         Move.l  ExecBase,A6
  246.         Lea     DISKIO,A1
  247.         Move    #3,28(A1)
  248.         Move.l  DISKBUFF,40(A1)
  249.         Move.l  #0,44(A1)
  250.         Move.l  #1024,36(A1)
  251.         Jsr     DoIO(A6)
  252.  
  253.         Move    #4,28(A1)
  254.         Jsr     DoIO(A6)
  255. Rts     ;*******************************
  256.  
  257.  
  258. ;**** DATEINAMEN ERMITTELN *************
  259. xGETNAME:
  260.         Move.l  D6,A0
  261.         Add.l   #8,A0
  262.         Sub.b   #8,D7
  263.         Move.l  A0,D2
  264.         Move.l  D7,D3
  265.         Add.l   D2,D3
  266.         Sub.l   #1,D3
  267.         Move.l  D3,A0
  268.         Move.b  #0,(A0)
  269.         Move.l  D2,D1
  270. Rts     ;*******************************
  271.  
  272.  
  273. ;**** KEINE GÜLTIGEN PARAMETER *********
  274. xUSAGE:
  275.         Move.l  DOSBASE,A6
  276.         Move.l  #USAGE,D2
  277.         Move.l  #USAGEEND,D3
  278.         Sub.l   D2,D3
  279.         Move.l  HANDLE,D1
  280.         Jsr     Write(A6)
  281. Rts     ;*******************************
  282.  
  283.  
  284. ;**** PARAMETETFEHLER ******************
  285. xFEHLER:
  286.         Jsr     xOPENLIB
  287.         Jsr     xOPEN
  288.         Jsr     xUSAGE
  289.         Jsr     xCLOSE
  290.         Jsr     xCLOSELIB
  291. Rts     ;*******************************
  292.  
  293.  
  294. ;**** DRIVE NICHT VORHANDEN ************
  295. xDEVFEHLER:
  296.         Move.l  DOSBASE,A6
  297.         Move.l  HANDLE,D1
  298.         Move.l  #DEVERR,D2
  299.         Move.l  #DEVERREND,D3
  300.         Sub.l   D2,D3
  301.         Jsr     Write(A6)
  302.         Jsr     xCLOSE
  303.         Jsr     xCLOSELIB
  304. Rts     ;*******************************
  305.  
  306.  
  307. ;**** DATEI WURDE NICHT GEÖFFNET *******
  308. xFILEFEHLER:
  309.         Move.l  DOSBASE,A6
  310.         Move.l  HANDLE,D1
  311.         Move.l  #FILERR,D2
  312.         Move.l  #FILERREND,D3
  313.         Sub.l   D2,D3
  314.         Jsr     Write(A6)
  315. Rts     ;*******************************
  316.  
  317.  
  318. ;**** DATEI SCHLIEßEN ******************
  319. xCLOSE:
  320.         Move.l  DOSBASE,A6
  321.         Move.l  HANDLE,D1
  322.         Jsr     Close(A6)
  323. Rts     ;*******************************
  324.  
  325.  
  326. ;**** DEVICE SCHLIEßEN *****************
  327. xCLOSEDEV:
  328.         Move.l  ExecBase,A6
  329.         Lea     DISKIO,A1
  330.         Move    #9,28(A1)
  331.         Move.l  #0,36(A1)
  332.         Jsr     DoIO(A6)
  333.         Lea     DISKIO,A1
  334.         Jsr     CloseDevice(A6)
  335. Rts     ;*******************************
  336.  
  337.  
  338. ;**** LIBRARY SCHLIEßEN ****************
  339. xCLOSELIB:
  340.         Move.l  ExecBase,A6
  341.         Move.l  DOSBASE,A1
  342.         Jsr     CloseLib(A6)
  343. Rts     ;*******************************
  344.  
  345.  
  346. ;**** SPEICHERRESERVIERUNG *************
  347. DOSNAME:        Dc.b `dos.library`,0
  348.  
  349. Even
  350. DEVICE:         Dc.b `trackdisk.device`,0
  351.  
  352. Even
  353. DOSBASE:        Dc.l 0
  354.  
  355. DISKIO:         Blk.l 20,0
  356.  
  357. DISKREP:        Blk.l 8,0
  358.  
  359. DISKBUFF:       Dc.l 0
  360.  
  361. FENSTER:        Dc.b `*`,0
  362.  
  363. HANDLE:         Dc.l 0
  364.  
  365. HANDLEDAT:      Dc.l 0
  366.  
  367. USAGE:
  368. Dc.b "USAGE: ",$9b,"33;40mDoBB",$9b,"0m [DRIVE] [-S FILE] [-L FILE] "
  369. Dc.b "[-N] [-D] [-Q]",10
  370. USAGEEND:
  371.  
  372. DEVERR:
  373. Dc.b "Drive not available !",10
  374. DEVERREND:
  375.  
  376. FILERR:
  377. Dc.b "Can`t open file !",10
  378. FILERREND:
  379.  
  380. Even
  381. DOSBOOT:
  382. Dc.l $444F5300,$C0200F19,$370,$43FA0018,$4EAEFFA0,$4A80670A,$20402068
  383. Dc.l $167000,$4E7570FF,$60FA646F,$732E6C69,$62726172,$79000000
  384.  
  385. NOBOOT:
  386. Dc.l $444F5300
  387.  
  388. QUARTEXBOOT:
  389. Dc.l $444F5300,$1C2238A9,$370,$48E7FF7E,$70026100,$22E7009
  390. Dc.l $42A90024,$6100023A,$41FA03CC,$22690014,$20A9003C,$22690038
  391. Dc.l $2F0943FA,$2B8303C,$4E20222E,$3E0481,$80004,$6B043340
  392. Dc.l $1E4AAE,$4E6704,$3340000A,$43FA02B6,$207A0394,$41E80034
  393. Dc.l $4A986604,$33400008,$4A986604,$33400012,$4A986604,$3340001C
  394. Dc.l $4AAE002A,$660C4AAE,$2E6606,$4AAE022A,$671A43FA,$3237020
  395. Dc.l $1340001A,$12C012BC,$4145FA,$2D424FC,$56495249,$43F90007
  396. Dc.l $80002449,$4299B3FC,$7F000,$66F62C57,$33FC01A0,$DFF096
  397. Dc.l $43FA01CE,$2D490032,$41F90007,$1000214A,$87001,$223C0000
  398. Dc.l $300243C,$100,$4EAEFE7A,$43F90007,$11004EAE,$FF3A43F9
  399. Dc.l $71100,$237C0007,$10000004,$70014EAE,$FEAA4BFA,$1C87800
  400. Dc.l $7632181D,$672E610E,$6830000,$1806106,$4BED001F,$60E843F9
  401. Dc.l $71100,$20032204,$4EAEFF10,$43F90007,$1100204D,$701F4EAE
  402. Dc.l $FFC44E75,$33FC8380,$DFF096,$283C000F,$F0002C78,$45384
  403. Dc.l $670000B8,$43FA025A,$C110041,$661243FA,$1663011,$2400F00
  404. Dc.l $6400100,$32805284,$4BF900BF,$E0010815,$66700,$8E102D
  405. Dc.l $C00422D,$C004600,$B03C00A0,$670000D4,$B03C00A2,$660A203C
  406. Dc.l $80000,$600000C8,$B03C00A4,$66164BF9,$FC00D0,$42AE0026
  407. Dc.l $4EAEFFE2,$41F80002,$4E704ED0,$B03C00A6,$6738B03C,$A86606
  408. Dc.l $4BFAFFEA,$60DEB03C,$AA6756,$B03C00AC,$66040855,$1B03C
  409. Dc.l $AE6612,$47FA020C,$32130841,$53681,$33C100DF,$F1DC6000
  410. Dc.l $FF52207A,$1F241E8,$3470FF,$20C020C0,$20806112,$43FA01E6
  411. Dc.l $4EAEFFA0,$20402068,$167000,$4E75205F,$588F4CDF,$7EFF2F08
  412. Dc.l $4E7561F2,$700541F9,$50000,$610C7003,$61087004,$61046000
  413. Dc.l $FDCC41F9,$30000,$23480028,$237C0000,$4000024,$42A9002C
  414. Dc.l $3340001C,$4EAEFE38,$4E75202E,$3E204E,$4BF900FC,$2800C65
  415. Dc.l $21FC66FA,$99CC4DF8,$6762640,$43F900DF,$F096203C,$7FFF7FFF
  416. Dc.l $22C022C0,$4EE8FFE2,$1002200,$1020001,$920020,$9400D8
  417. Dc.l $8E3000,$9030FF,$E00007,$E28870,$E40007,$E688A0
  418. Dc.l $1860AAA,$1840EEE,$1820777,$1800002,$FFFFFFFE,$223C3C3C
  419. Dc.l $3C3C3C20,$5554494C,$49545920,$424F4F54,$2056322E,$30203E3E
  420. Dc.l $3E3E3E3E,$35464153,$544D454D,$3A4F4646,$20202020,$20203120
  421. Dc.l $4D454720,$43484950,$3A4F4646,$2C202044,$46313A4F,$46462020
  422. Dc.l $20444632,$3A4F4646,$20202044,$46333A4F,$46462020,$43463120
  423. Dc.l $46415354,$4D454D20,$4F464620,$46322043,$4849502F,$46415354
  424. Dc.l $204F4646,$4C463320,$414C4C20,$4D454D20,$4F4E2020,$4634204B
  425. Dc.l $494C4C20,$44524956,$45532120,$55463520,$48415244,$20524553
  426. Dc.l $45542020,$46362049,$4E535441,$4C4C2042,$4F4F5420,$5E463720
  427. Dc.l $544F4747,$4C45204C,$45442020,$46382054,$4F472050,$414C2F4E
  428. Dc.l $54534320,$6C20204E,$4F205649,$52555320,$48415320,$4245454E
  429. Dc.l $20444554,$45435445,$44212020,$75424F4F,$54204259,$20204E2E
  430. Dc.l $4F2E4D2E,$412E4420,$204F4620,$51554152,$54455821,$0
  431. Dc.l $0,$646F732E,$6C696272,$61727900
  432.